#ifndef T_CCAMERA_H
#define T_CCAMERA_H 1

class TEST_CAMERA
{
public:

	
	//test chessboard with 8 points, using simulated data
	static void testCalibrationFrom8Points(void);

	//test get chessboard time and accurate
	static void testGetChessboard(void);

	//test to get concentric circles from an image, test parts of program
	static void testCheckConcentricCircles(void);

	// get conventric center from an image
	static void testCheckConcentricCirclesWhole(void);

	//test marker detector from aruco, with 
	static void testMarkerDetector(void);

	//test marker tracking from a video
	static void testMarkerTracking(void);

	//test marker create with prefered Ids
	static void testMarkerCreate(void);

	//test marker detection and concentric circles
	static void testMarkerWithConcentricCirciles();

	//test subArea from four corner Points
	static void testSubAreaFromParallelogram();

	//test get concentric circles centers from different seeds
	static void testConcentricCenterFromMultipSeeds();

	//test concentric circles detection speed, less than 90ms
	static void testCpuConcentricDetection();
	//test marker tracking in two consequent images
	static void testMarkerTrackingInSubarea();
	//test marker speed
	static void testConcentricCircleCentersWithMarkerTracking();
	//test wavelet transform, test failed
	static void testHarrWaveletTransform();
	//test concentric from video
	static void testConcentricFromVideo();
	
	//test cvxCameraRig from 4 marker corners
	static void testCvxCameraRigRead();

	//test CvxCameraRig orientation from 16 points
	//test cvxCameraRig from 16 marker corners
	static void testCvxCameraRig16points();
	
	//test matlab extrinsic from one frame
	static void testMatlabExtrinsic();
	
	//alignment from 16 points
	static void testcvxAlignment();
	

	//test rotation angle in image space
	static void testRotationAngle();
	//test sub corner detection in chessboard
	static void testValidAreaCorner();
	//test undistortion in an image
	static void testUndistortion();
	//test keystone measurement
	static void testKeystone();
	//test check MCCBoard in a single image
	static void testMCCBoard();
	//test GetChessboard time distribution
	static void testChessboardTime();
	
	//test get chessboard position from video and store in a .txt file
	static void testChessboardFromVideo();
	//test homography error from object plane to image plane
	static void testHomographyError();
	//grab frame from video that has chessboard
	static void testChessboardVideo();
	
	//select clear marker position from video
	static void testClearMarkVideo();

	//video sequence jump when people change pose
	static void testStageDivision();

	//random select frames from multiple videos
	static void testRandomSelection();

	//get theta and phi from unit norm vector
	static void testGetEularAngleInSphereCoor();

	//Non linear bundle adjust, R ant T is known
	static void testBundleAdjustNonLinear();

	//bundle adjust with x, y, z of target geometry
	static void testBundleAdjust3DLinear();

	static void testEulerAngleFromExtrinsic();

	//test cvxAnn
	static void testANN();

	//test keyframe calib
	static void testKFCalib();

	//test marker chessboard in single image
	static void testCvxMarkerChessboard();
	//test Euler angle from rotation matrix
	static void testGetEulerAngle();

	//test rotation matrix from marker chessboard
	static void testGetOrientationFromMakerChessboard();

	//test detect marker chessboard in a short video
	static void testMarkerChessboardFromVideo();
	
	static void testKFCalibForMarkerChessboard();

	//test change image to canonical image using perspective
	static void testCanonicalWarp();

	//test iterative refinement
	static void testIterativeRefine();

	//test marker chessboard inside
	static void testMarkerInside();
	//test marker chessboard expansion
	static void testMarkerChessboardExp();
	
	//Iterative Refinement
	static void TestCvxDKKCamera();
	
	//combine two video to one video
	static void TestWriteCorner2Video();

	//the response time of marker chessboard is constant with the image size	 
	static void TestConstantWithImageSize();

	//check intrinsic parameter accuracy by re projection error
	static void TestCheckIntrinsic();

	static void TestRectifyImages();

	static void TestRectifyUnbalibrated();

	//check alignment using sift feature 
	static void TestSiftFeature();

	//get Red cyan image
	static void TestRedCyanImage();

	//
	static void TestWithGroudTruth();

	//
	static void TestMovFile();

	//
	static void testUndistortionPoints();

	//
	static void testMarkerChessboard();







};

#endif